
var http = require("http");
var https = require("https");

var url = require("url");
var path = require("path");
var fs = require("fs");
var fsp = require("fs/promises");
const { getSite, render } = require("./tool/render");

// console.log(http);

const hostname = "localhost";
const port = "3000";

// http 的 createServer() 方法创建一个新的 HTTP 服务器并返回它。
// createServer() 可以接受一个回调函数, 每当服务器接收到来自客户端的请求时都会执行一次
// 回调函数中有两个参数(形参) request response
// request(对象) 接收客户端传递的信息
// response(对象) 配置服务端响应的相关信息


var server = http.createServer(async function (req, res) {

    if (req.url != "/favicon.ico") { // 非网页图片
        console.log("接收到来自客户端的请求");

        // console.log(req.url);  // 本次客户端,请求服务器的内容的地址 (路径部分 + 参数数据队列)

        var urlDetail = url.parse(req.url, true);
        // console.log(urlDetail);
        var { pathname, query } = urlDetail;  // pathname url中的路径部分  query:url中的参数数据解析
        // console.log(pathname);

        if (fs.existsSync(path.join(getSite(), pathname))) { // 站点中存在对应的文件/文件夹
            render(pathname, res);
        } else {
            res.end("404  NotFound");
        }

    } else {
        res.end();
    }
});


// 服务器设置为监听指定的端口和主机名。 当服务器就绪时，回调函数被调用，在这种情况下通知我们服务器正在运行。
server.listen(port, hostname, function () {
    console.log("服务器启动成功=> http://localhost:3000");
})

